package oj.oj_203;

import oj.ListNode;

/**
 * 移除链表元素
 * 给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 。
 *https://leetcode.cn/problems/remove-linked-list-elements/submissions/
 */
public class Solution {
    public ListNode removeElements(ListNode head, int val) {
        ListNode cur=head;
        ListNode pre=null;
        ListNode fakeHead=new ListNode();//设置一个第一个节点的前驱fakeHead节点
        fakeHead.next=head;
        while(cur!=null){
            if(cur.val==val){
                //需要知道cur的前驱节点
                //删除前驱节点
                pre.next=cur.next;
                //如果删除节点，pre的位置就不变
            }
            else {
                //如果没有进行删除操作，pre=cur
                pre=cur;
            }
            cur=cur.next;
        }
        return fakeHead.next;//返回头结点
    }
}
